package br.gov.ibama.client.menu;

import br.gov.ibama.client.componentes.BasisComponentes;
import br.gov.ibama.client.comum.DadosDeFuncionalidade;
import br.gov.ibama.client.comum.DadosDeModulo;
import br.gov.ibama.client.visao.VisaoPrincipal;

import com.smartgwt.client.types.Cursor;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.layout.SectionStackSection;

public final class CriadorDeSecaoDeMenu {
	
	private static final int ALTURA_ITEM_MENU_15 = 15;
	private DadosDeModulo dadosDeModulo;
	private SectionStackSection secaoDeMenu;
	private VisaoPrincipal visaoPrincipal;

	public CriadorDeSecaoDeMenu(DadosDeModulo dadosDeModulo, VisaoPrincipal visaoPrincipal) {
		this.dadosDeModulo = dadosDeModulo;
		this.visaoPrincipal = visaoPrincipal;
	}

	public SectionStackSection criaSecaoDeMenu() {
		for (DadosDeFuncionalidade dadosDeFuncionalidade : dadosDeModulo.getDadosDeFuncionalidades()) {
				getSecaoDeMenu().addItem(criaItemDeMenu(dadosDeFuncionalidade));
		}
		return secaoDeMenu;
	}

	private Canvas criaItemDeMenu(DadosDeFuncionalidade dadosDeFuncionalidade) {
		Label label = new Label(dadosDeFuncionalidade.getTitulo());
		label.setCursor(Cursor.HAND);
		label.setHeight(ALTURA_ITEM_MENU_15);
		label.addClickHandler(new MenuItemClickHandler(dadosDeFuncionalidade, visaoPrincipal));
		return label;
	}

	public SectionStackSection getSecaoDeMenu() {
		if (secaoDeMenu == null) {
			secaoDeMenu = BasisComponentes.criaSecaoDeMenu(dadosDeModulo.getTitulo());
		}
		return secaoDeMenu;
	}

}
